package edu.scau.mis.pos.service;

import edu.scau.mis.pos.entity.PosOrderItem;
import edu.scau.mis.pos.vo.PosResultVo;
import edu.scau.mis.pos.vo.DashboardVo;
import edu.scau.mis.pos.vo.OrderItemVo;

import java.util.List;
import java.util.Map;

/**
 * (PosOrderItem)表服务接口
 *
 * @author makejava
 * @since 2021-11-10 17:15:45
 */
public interface IOrderItemService {

    /**
     * 通过ID查询单条数据
     *
     * @param orderItemId 主键
     * @return 实例对象
     */
    PosOrderItem queryById(Integer orderItemId);

    /**
     * 分页查询
     *
     * @param posOrderItem 筛选条件
     * @return 查询结果
     */
    List<PosOrderItem> queryAll(PosOrderItem posOrderItem);

    /**
     * 新增数据
     *
     * @param posOrderItem 实例对象
     * @return 实例对象
     */
    PosOrderItem insert(PosOrderItem posOrderItem);

    /**
     * 修改数据
     *
     * @param posOrderItem 实例对象
     * @return 实例对象
     */
    PosOrderItem update(PosOrderItem posOrderItem);

    /**
     * 通过主键删除数据
     *
     * @param orderItemId 主键
     * @return 是否成功
     */
    boolean deleteById(Integer orderItemId);

    /**
     * 业务方法：创建订单方法
     *
     * @return 订单信息
     */
    Map<String,Object> createOrder();

    /**
     * 业务方法：加入待购商品方法
     *
     * @return 订单明细
     */
    PosResultVo enterLineOrderItem(OrderItemVo orderItemVo);

    /**
     * 业务方法：确认购买方法
     *
     */
    boolean ConfirmPurchaseItem();

    /**
     * 业务方法：获得总金额和总数量
     *
     * @return 订单中商品总金额和总数量
     */
    Map<String, Object> getTotalQuantityAndTotalAmount();

    /**
     * 移除缓存
     *
     * @return true or false
     */
    String removeCache();

    /**
     * 按商品类别id统计借阅数
     * @return 结果集合
     */
    List<DashboardVo> CountByCategoryId();
}
